package ch.penas.business.dom;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/** @author Daniel */
@Entity
@Table(name = "utilisateurs")
public class Formateur implements Serializable {

	/** La serialization de la class Formateur pour question de securiter.*/
	private static final long serialVersionUID = -2339046580103306987L;

	/** ID de l'utilisateur. */
	@Id
	@Column(name = "id_utilisateur")
	private String idUtilisateur;

	/** User de l'utilisateur. */
	@Column(name = "id_user")
	private String user;

	/** Nom de l'utilisateur. */
    @Column(name = "nom")
	private String nom;

    /** Prenom de l'utilisateur. */
    @Column(name = "prenom")
	private String prenom;

    /** Adresse de l'utilisateur. */
    @Column(name = "adresse")
	private String adresse;

    /** Numero fixe de l'utilisateur. */
    @Column(name = "numero_fixe")
	private String numeroFixe;

    /** Numero de natel de l'utilisateur. */
    @Column(name = "numero_natel")
	private String numeroNatel;

    /** Mail de l'utilisateur. */
	@Column(name = "mail")
	private String mail;

	/** Mot de passe de l'utilisateur. */
	@Column(name = "passe")
	private String password;

	/** Constructeur par défaut de la class Formateur. */
	public Formateur() { }

	/** Re definition du constructeur de la class Formateur.
	 *
	 * @param aNom est egale au nom de l'utilisateur
	 * @param aPrenom est egale au prenom de l'utilisateur
	 * @param aAdresse est egale a l'adresse de l'utilisateur
	 * @param aNumeroFixe est egale au numero fixe de l'utilisateur
	 * @param aNumeroNatel est egale au numero de natel de l'utilisateur
	 * @param aMail est egale a l'e-mail de l'utilisateur
	 * @param aUser est egale au user de l'utilisateur
	 * @param aIdUtilisateur est egale a l'idUtilisateur de l'utilisateur
	 * @param aPassword est egale au mot de passe de l'utilisateur
	 */
	public Formateur(final String aNom, final String aPrenom,
			final String aAdresse, final String aNumeroFixe,
			final String aNumeroNatel, final String aMail,
			final String aUser, final String aIdUtilisateur,
			final String aPassword) {
		this.nom = aNom;
		this.prenom = aPrenom;
		this.adresse = aAdresse;
		this.numeroFixe = aNumeroFixe;
		this.numeroNatel = aNumeroNatel;
		this.mail = aMail;
		this.user = aUser;
		this.idUtilisateur = aIdUtilisateur;
		this.password = aPassword;

	}

	/** Permet d'avoir une sorte de clé primaire.
	 *
	 * @return hashCode de type string
	 */
	public final String getKey() {
		return String.valueOf(hashCode());
	}

	/** Permet de recuperer la valeur de nom.
	 *
	 * @return le nom de l'utilisateur
	 */
	public final String getNom() {
		return this.nom;
	}
	/** Permet de modifier la valeur du nom.
	 *
	 * @param aNom est egale au nom de l'utilisateur
	 */
	public final void setNom(final String aNom) {
		this.nom = aNom;
	}

	/** Permet de recuperer la valeur de prenom.
	 *
	 * @return le prenom de l'utilisateur
	 */
	public final String getPrenom() {
		return this.prenom;
	}
	/** Permet de modifier la valeur de prenom.
	 *
	 * @param aPrenom est egale au prenom de l'utilisateur
	 */
	public final void setPrenom(final String aPrenom) {
		this.prenom = aPrenom;
	}

	/** Permet de recuperer la valeur de adresse.
	 *
	 * @return l'adresse de l'utilisateur
	 */
	public final String getAdresse() {
		return this.adresse;
	}
	/** Permet de modifier la valeur de adresse.
	 *
	 * @param aAdresse est egale a l'adresse de l'utilisateur
	 */
	public final void setAdresse(final String aAdresse) {
		this.adresse = aAdresse;
	}

	/** Permet de recuperer la valeur de numeroFixe.
	 *
	 * @return le numero fixe de l'utilisateur
	 */
	public final String getNumeroFixe() {
		return this.numeroFixe;
	}
	/** Permet de modifier la valeur du numero fixe.
	 *
	 * @param aNumeroFixe est egale au numero fixe de l'utilisateur
	 */
	public final void setNumeroFixe(final String aNumeroFixe) {
		this.numeroFixe = aNumeroFixe;
	}

	/** Permet de recuperer la valeur de numeroNatel.
	 *
	 * @return le numero de natel de l'utilisateur
	 */
	public final String getNumeroNatel() {
		return this.numeroNatel;
	}
	/** Permet de modifier la valeur du numero de natel.
	 *
	 * @param aNumeroNatel est egale au numero de natel de l'utilisateur
	 */
	public final void setNumeroNatel(final String aNumeroNatel) {
		this.numeroNatel = aNumeroNatel;
	}

	/** Permet de recuperer la valeur de mail.
	 *
	 * @return le mail de l'utilisateur
	 */
	public final String getMail() {
		return this.mail;
	}
	/** Permet de modifier la valeur de mail.
	 *
	 * @param aMail est egale au mail de l'utilisateur
	 */
	public final void setMail(final String aMail) {
		this.mail = aMail;
	}

	/** Permet de recuperer la valeur de user.
	 *
	 * @return le user de l'utilisateur
	 */
	public final String getUser() {
		return this.user;
	}
	/** Permet de modifier la valeur de user.
	 *
	 * @param aUser est egale au user de l'utilisateur
	 */
	public final void setUser(final String aUser) {
		this.user = aUser;
	}

	/** Permet de recuperer la valeur de idUtilisateur.
	 *
	 * @return l'idUtilisateur de l'utilisateur
	 */
	public final String getIdUtilisateur() {
		return this.idUtilisateur;
	}
	/** Permet de modifier la valeur de idUtilisateur.
	 *
	 * @param aIdUtilisateur est egale a l'idUtilisateur de l'utilisateur
	 */
	public final void setIdUtilisateur(final String aIdUtilisateur) {
		this.idUtilisateur = aIdUtilisateur;
	}

	/** Permet de recuperer la valeur du mot de passe.
	 *
	 * @return le mot de passe de l'utilisateur
	 */
	public final String getPassword() {
		return this.password;
	}
	/** Permet de modifier la valeur du mot de passe.
	 *
	 * @param aPassword est egale au mot de passe de l'utilisateur
	 */
	public final void setPassword(final String aPassword) {
		this.password = aPassword;
	}

	/**	Permet de valider les diferentevenement. */
	public final void validate() {
		if (this.getNom() == null) {
			throw new IllegalArgumentException(
				"Le champ: (Nom)ne doit pas etre vide");
		}
	}
}